跳到主要内容

问:zsh 和 bash 默认的命令自动补全路径总结一下

好的 👍 我给你整理一下 zshbash 的命令自动补全(completion scripts)默认路径对比总结:


🐚 Bash 的默认命令补全路径

Bash 的补全主要依赖 bash-completion 包。安装后,常见路径有:

  • 全局配置(系统级)
    • /etc/bash_completion
    • /usr/share/bash-completion/bash_completion
    • /usr/share/bash-completion/completions/ (存放具体命令的补全脚本,比如 git, docker 等)
  • 用户配置
    • ~/.bash_completion
    • ~/.bash_completion.d/ (自定义补全脚本目录,可能需要自己创建)

👉 Bash 会在 ~/.bashrc 中通过 [[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && . /usr/share/bash-completion/bash_completion 来加载。


🐚 Zsh 的默认命令补全路径

Zsh 内置 强大的补全系统(无需额外安装 bash-completion,但可兼容)。

  • 系统级
    • /usr/share/zsh/functions/Completion/ (官方补全函数,比如 _git, _ssh, _apt 等,文件名前通常带下划线 _
    • /usr/share/zsh/site-functions/ (第三方包或系统管理员额外放置的补全函数)
  • 用户级
    • ~/.zshrc 里配置 autoload -Uz compinit && compinit 启动补全
    • Oh My Zsh 用户:
      • $ZSH/completions/
      • ~/.oh-my-zsh/custom/plugins/*/
      • ~/.oh-my-zsh/custom/completions/ (这里面你可以放自定义补全文件,文件名通常以 _ 开头)

✅ 总结对比表

Shell系统级补全路径用户级补全路径
Bash/usr/share/bash-completion/ /etc/bash_completion~/.bash_completion ~/.bash_completion.d/
Zsh/usr/share/zsh/functions/Completion/ /usr/share/zsh/site-functions/~/.zshrc (配置 compinit) ~/.oh-my-zsh/custom/completions/

要不要我给你写一个 快速检查脚本,能自动检测当前系统里的 bash / zsh 补全路径 并列出来?